Ephedra californica recovery

Purpose

To explore Ephedra californica recovery following clipping. Year two in a long-term shrub removal experiment. Aboveground clipping. Panoche Hills Ecological Reserve. The manipulative research was done at site 1.1, the plateau within this reserve.

Removal done by A. Liczner, A. Filazzola, T. Noble, and M. Westphal. Loss of shrub effects on animals experiment separate from this survey initiated by A. Liczner and completed 2016. Eva Gruber surveyed for resprouting.

ecoblender

Ephedra foundation effects

An examination of the evidence associated with pattern analyses between ephedra and other plant species at Panoche Hills Ecological Reserve.

#Data
#Primary
foundation <- read_csv("data/ephedra.foundation.csv")
foundation <- foundation %>% mutate(volume = ((length + width)/2)^3*3.14*(1/3))
foundation$year <- as.character(foundation$year)
foundation$site <- as.character(foundation$site)
foundation
## # A tibble: 450 × 11
##     year  region  site   rep microsite length width height abundance
##    <chr>   <chr> <chr> <int>     <chr>  <dbl> <dbl>  <dbl>     <int>
## 1   2016 Panoche   1.3     1     Shrub   3.77  2.38   1.59       263
## 2   2016 Panoche   1.3     1      Open     NA    NA     NA       106
## 3   2016 Panoche   1.3     2     Shrub   3.22  2.38   1.84       276
## 4   2016 Panoche   1.3     2      Open     NA    NA     NA       245
## 5   2016 Panoche   1.3     3     Shrub   1.95  1.30   0.59       217
## 6   2016 Panoche   1.3     3      Open     NA    NA     NA       175
## 7   2016 Panoche   1.3     4     Shrub   4.21  4.39   1.71       283
## 8   2016 Panoche   1.3     4      Open     NA    NA     NA       214
## 9   2016 Panoche   1.3     5     Shrub   3.41  3.17   1.55       241
## 10  2016 Panoche   1.3     5      Open     NA    NA     NA       233
## # ... with 440 more rows, and 2 more variables: richness <int>,
## #   volume <dbl>
#Effect sizes
foundation.rii <- read_csv("data/ephedra.foundation.rii.csv")
foundation.rii <- foundation.rii %>% mutate(volume = ((length + width)/2)^3*3.14*(1/3))
foundation.rii$year <- as.character(foundation.rii$year)
foundation.rii$site <- as.character(foundation.rii$site)
foundation.rii <- foundation.rii %>% filter(abundance < 0.8 & abundance > -0.7)
foundation.rii
## # A tibble: 223 × 10
##     year  region  site   rep microsite length width  abundance   richness
##    <chr>   <chr> <chr> <int>     <chr>  <dbl> <dbl>      <dbl>      <dbl>
## 1   2013 Panoche   1.1     1     Shrub    4.5   4.8 0.22580645  0.0000000
## 2   2013 Panoche   1.1     2     Shrub    2.9   2.1 0.09803922  0.1111111
## 3   2013 Panoche   1.1     3     Shrub    1.2   1.2 0.04761905  0.0000000
## 4   2013 Panoche   1.1     4     Shrub    1.9   2.1 0.21739130  0.0000000
## 5   2013 Panoche   1.1     5     Shrub    3.4   4.4 0.16666667 -0.1428571
## 6   2013 Panoche   1.1     6     Shrub    4.1   2.1 0.39622641 -0.1428571
## 7   2013 Panoche   1.1     7     Shrub    2.4   2.3 0.21212121  0.1428571
## 8   2013 Panoche   1.1     8     Shrub    3.2   3.0 0.16666667  0.0000000
## 9   2013 Panoche   1.1     9     Shrub    4.1   3.8 0.35849057 -0.1428571
## 10  2013 Panoche   1.1    10     Shrub    3.2   3.1 0.31343284 -0.1428571
## # ... with 213 more rows, and 1 more variables: volume <dbl>
rii.2013 <- foundation.rii %>% filter(year == "2013")
rii.2014 <- foundation.rii %>% filter(year == "2014")
rii.2015 <- foundation.rii %>% filter(year == "2015")
rii.2016 <- foundation.rii %>% filter(year == "2016")

#Rii
#differences from open
ggplot(foundation.rii, aes(year, abundance)) + geom_boxplot(fill = "darkseagreen3") + ylab("Rii abundance")

ggplot(foundation.rii, aes(year,richness)) + geom_boxplot(fill = "darkseagreen3") + ylab("Rii richness")

#models for different between years
require(lmerTest)
m <- lmer(abundance~(1|year) + volume, data = foundation.rii)
#summary(m)
anova(m, test = "Chisq")
## Analysis of Variance Table of type III  with  Satterthwaite 
## approximation for degrees of freedom
##         Sum Sq Mean Sq NumDF  DenDF F.value  Pr(>F)  
## volume 0.28695 0.28695     1 220.41  3.9366 0.04849 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
rand(m) #to get p-values for random effects
## Analysis of Random effects Table:
##      Chi.sq Chi.DF p.value  
## year   3.58      1    0.06 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m <- lmer(richness~(1|year) + volume, data = foundation.rii)
#summary(m) 
anova(m, test = "Chisq")
## Analysis of Variance Table of type III  with  Satterthwaite 
## approximation for degrees of freedom
##         Sum Sq Mean Sq NumDF  DenDF F.value  Pr(>F)  
## volume 0.18022 0.18022     1 218.58   2.987 0.08535 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
rand(m)
## Analysis of Random effects Table:
##      Chi.sq Chi.DF p.value    
## year   54.5      1   2e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#different from zero
#ab
t1 <- t.test(foundation.rii$abundance, mu = 0)
t1
## 
##  One Sample t-test
## 
## data:  foundation.rii$abundance
## t = 8.5519, df = 222, p-value = 1.988e-15
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  0.1215495 0.1943441
## sample estimates:
## mean of x 
## 0.1579468
#richness
t2 <- t.test(foundation.rii$richness, mu = 0)
t2
## 
##  One Sample t-test
## 
## data:  foundation.rii$richness
## t = -6.1717, df = 222, p-value = 3.171e-09
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.15553974 -0.08024948
## sample estimates:
##  mean of x 
## -0.1178946
# ab each year
t1 <- t.test(rii.2013$abundance, mu = 0)
t1
## 
##  One Sample t-test
## 
## data:  rii.2013$abundance
## t = 8.6815, df = 43, p-value = 5.253e-11
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  0.1640679 0.2633583
## sample estimates:
## mean of x 
## 0.2137131
t1 <- t.test(rii.2014$abundance, mu = 0)
t1
## 
##  One Sample t-test
## 
## data:  rii.2014$abundance
## t = 4.4799, df = 44, p-value = 5.256e-05
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  0.1292521 0.3406396
## sample estimates:
## mean of x 
## 0.2349459
t1 <- t.test(rii.2015$abundance, mu = 0)
t1
## 
##  One Sample t-test
## 
## data:  rii.2015$abundance
## t = 2.9259, df = 44, p-value = 0.005416
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  0.03062158 0.16618316
## sample estimates:
##  mean of x 
## 0.09840237
t1 <- t.test(rii.2016$abundance, mu = 0)
t1
## 
##  One Sample t-test
## 
## data:  rii.2016$abundance
## t = 3.9614, df = 88, p-value = 0.000151
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  0.06057307 0.18252997
## sample estimates:
## mean of x 
## 0.1215515
#richness by year
t2 <- t.test(rii.2013$richness, mu = 0)
t2
## 
##  One Sample t-test
## 
## data:  rii.2013$richness
## t = 0.075117, df = 43, p-value = 0.9405
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.03475463  0.03744386
## sample estimates:
##   mean of x 
## 0.001344615
t2 <- t.test(rii.2014$richness, mu = 0)
t2
## 
##  One Sample t-test
## 
## data:  rii.2014$richness
## t = 2.668, df = 44, p-value = 0.01064
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  0.02465005 0.17688174
## sample estimates:
## mean of x 
## 0.1007659
t2 <- t.test(rii.2015$richness, mu = 0)
t2
## 
##  One Sample t-test
## 
## data:  rii.2015$richness
## t = -4.6118, df = 44, p-value = 3.435e-05
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.24208568 -0.09484554
## sample estimates:
##  mean of x 
## -0.1684656
t2 <- t.test(rii.2016$richness, mu = 0)
t2
## 
##  One Sample t-test
## 
## data:  rii.2016$richness
## t = -8.6023, df = 88, p-value = 2.702e-13
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.3223218 -0.2013451
## sample estimates:
##  mean of x 
## -0.2618334
#volume####
ggplot(foundation.rii, aes(volume, abundance)) + geom_point(aes(color = year)) + geom_smooth(method = "lm") + xlab("volume (m^3)")

ggplot(foundation.rii, aes(volume, abundance, color = year)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + xlab("volume (m^3)")

ggplot(foundation.rii, aes(volume, richness)) + geom_point(aes(color=year)) + geom_smooth(method = "lm") + xlab("volume (m^3)")

ggplot(foundation.rii, aes(volume, richness, color = year)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + xlab("volume (m^3)")

#posthoc tests from main models
m <- lm(abundance~volume, data = foundation.rii)
m
## 
## Call:
## lm(formula = abundance ~ volume, data = foundation.rii)
## 
## Coefficients:
## (Intercept)       volume  
##   0.1889542   -0.0009065
summary(m)
## 
## Call:
## lm(formula = abundance ~ volume, data = foundation.rii)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.80630 -0.16057  0.01776  0.18475  0.64730 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.1889542  0.0257240   7.345 3.91e-12 ***
## volume      -0.0009065  0.0005259  -1.724   0.0862 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2746 on 221 degrees of freedom
## Multiple R-squared:  0.01327,    Adjusted R-squared:  0.0088 
## F-statistic: 2.971 on 1 and 221 DF,  p-value: 0.08617
m <- lm(richness~volume, data = foundation.rii)
m
## 
## Call:
## lm(formula = richness ~ volume, data = foundation.rii)
## 
## Coefficients:
## (Intercept)       volume  
##  -0.1515101    0.0009828
summary(m)
## 
## Call:
## lm(formula = richness ~ volume, data = foundation.rii)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.54197 -0.20375  0.00403  0.18907  0.79721 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.1515101  0.0265882  -5.698 3.84e-08 ***
## volume       0.0009828  0.0005436   1.808    0.072 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2838 on 221 degrees of freedom
## Multiple R-squared:  0.01457,    Adjusted R-squared:  0.01011 
## F-statistic: 3.268 on 1 and 221 DF,  p-value: 0.07198
#test 2016 only
m <- lm(abundance~volume, data = rii.2016)
m
## 
## Call:
## lm(formula = abundance ~ volume, data = rii.2016)
## 
## Coefficients:
## (Intercept)       volume  
##    0.217302    -0.002641
summary(m)
## 
## Call:
## lm(formula = abundance ~ volume, data = rii.2016)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.78160 -0.12944  0.00135  0.23578  0.46049 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.217302   0.040966   5.304 8.49e-07 ***
## volume      -0.002641   0.000796  -3.318  0.00133 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2743 on 87 degrees of freedom
## Multiple R-squared:  0.1123, Adjusted R-squared:  0.1021 
## F-statistic: 11.01 on 1 and 87 DF,  p-value: 0.001325
m <- lm(richness~volume, data = rii.2016)
m
## 
## Call:
## lm(formula = richness ~ volume, data = rii.2016)
## 
## Coefficients:
## (Intercept)       volume  
##   -0.344154     0.002271
summary(m)
## 
## Call:
## lm(formula = richness ~ volume, data = rii.2016)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.40545 -0.26604  0.03897  0.21848  0.59324 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.344154   0.041271  -8.339 1.01e-12 ***
## volume       0.002271   0.000802   2.831  0.00576 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2763 on 87 degrees of freedom
## Multiple R-squared:  0.08437,    Adjusted R-squared:  0.07385 
## F-statistic: 8.017 on 1 and 87 DF,  p-value: 0.005756
#Primary data
#ggplot(foundation, aes(microsite, abundance)) + geom_boxplot() + facet_grid(~year)
#ggplot(foundation, aes(microsite, richness)) + geom_boxplot() + facet_grid(~year)
#ggplot(foundation, aes(volume, abundance, color = year)) + geom_point() + geom_smooth(method = "lm")
#ggplot(foundation, aes(volume, richness, color = year)) + geom_point() + geom_smooth(method = "lm")

Recovery data wrangling

#wrangle primary data
data <- read_csv("data/EH.recovery.2016.csv")
data <- data %>% mutate(volume = ((length + width)/2)^3*3.14*(1/3)) %>% arrange(desc(resprout))
data
## # A tibble: 40 × 9
##        date census    ID length width height resprout
##       <chr>  <chr> <int>  <dbl> <dbl>  <dbl>    <int>
## 1  nov.2016 post.2   182   1.20  1.40   0.91       15
## 2  nov.2016 post.2   217   1.15  1.25   0.85       15
## 3  nov.2016 post.2   303   3.50  2.80   0.60       13
## 4  nov.2016 post.2   614   1.70  1.15   0.43       12
## 5  nov.2016 post.2   146   3.40  2.15   0.70       10
## 6  nov.2016 post.2   621   1.85  0.90   0.65       10
## 7  nov.2016 post.2   651   2.55  2.40   1.00       10
## 8  nov.2016 post.2   137   1.90  3.30   0.60        9
## 9  nov.2016 post.2   245   3.20  2.50   0.80        8
## 10 nov.2016 post.2   271   2.80  2.55   0.71        8
## # ... with 30 more rows, and 2 more variables: observations <chr>,
## #   volume <dbl>
#stem data####
wet.weights <-read.csv("data/wet.weights.csv")
total.weight <- wet.weights %>% select(ID, total.weight)
stems <- read_csv("data/stem.analyses.csv")

#current volume used####
nov.2016 <- data %>% filter(date == "nov.2016") #only resurvey
nov.2016 <- left_join(nov.2016, total.weight, by = "ID")

#setup volume####
setup <- data %>% filter(date == "april.2013") %>% 
  select(ID, volume) %>% rename(setup.vol = volume)

merged.data <- left_join(nov.2016, setup)
merged.data <- left_join(merged.data, stems, by = "ID")

Recovery inference

#Recovery####
#Viz
#ggplot(nov.2016, aes(resprout, weight= volume)) + 
  #geom_histogram(binwidth = 2, fill = "darkseagreen3") +
  #xlab("number of shoots resprouted") +
  #ylab("relative weighted frequency by current volume") +
  #xlim(0,15)

ggplot(nov.2016, aes(resprout, weight= volume)) +
  geom_density(kernel = "gaussian", fill = "darkseagreen3") +
  xlab("number of shoots resprouted") +
  ylab("relative weighted frequency by current volume") +
  xlim(0,15)

ggplot(nov.2016, aes(height, weight= volume)) +
  geom_density(kernel = "gaussian", fill = "darkseagreen3") +
  xlab("height (m)") +
  ylab("relative weighted frequency by current volume")   

#ggplot(nov.2016, aes(total.weight, weight= volume)) + 
  #geom_histogram(binwidth = 700, fill = "darkseagreen3") +
  #xlab("total biomass (g)") +
  #ylab("relative weighted frequency by current volume")

ggplot(nov.2016, aes(total.weight, weight= volume)) +
  geom_density(kernel = "gaussian", fill = "darkseagreen3") +
  xlab("total biomass (g)") +
  ylab("relative weighted frequency by current volume") +
  xlim(0,5000)

summary(nov.2016)
##      date              census                ID            length     
##  Length:20          Length:20          Min.   :137.0   Min.   :0.000  
##  Class :character   Class :character   1st Qu.:199.2   1st Qu.:1.200  
##  Mode  :character   Mode  :character   Median :288.0   Median :1.875  
##                                        Mean   :368.8   Mean   :1.992  
##                                        3rd Qu.:561.5   3rd Qu.:2.763  
##                                        Max.   :651.0   Max.   :3.550  
##                                                                       
##      width           height          resprout     observations      
##  Min.   :0.000   Min.   :0.0000   Min.   : 0.00   Length:20         
##  1st Qu.:0.900   1st Qu.:0.6000   1st Qu.: 3.75   Class :character  
##  Median :1.225   Median :0.7000   Median : 8.00   Mode  :character  
##  Mean   :1.495   Mean   :0.6955   Mean   : 7.35                     
##  3rd Qu.:2.212   3rd Qu.:0.8500   3rd Qu.:10.00                     
##  Max.   :3.300   Max.   :1.0000   Max.   :15.00                     
##                                                                     
##      volume        total.weight 
##  Min.   : 0.000   Min.   : 547  
##  1st Qu.: 1.895   1st Qu.: 736  
##  Median : 3.370   Median :1087  
##  Mean   : 9.383   Mean   :1896  
##  3rd Qu.:18.806   3rd Qu.:2849  
##  Max.   :32.714   Max.   :5248  
##                   NA's   :3

Shrub volume inference

#Size-dependent recoveries####
#Primary data
ggplot(merged.data, aes(setup.vol, resprout)) +
  geom_point(color = "darkseagreen3") +
  geom_smooth(method = "lm", color = "darkseagreen3") +
  xlab("initial shrub volume (m^3)") +
  ylab("number of shoots resprouted")

ggplot(merged.data, aes(setup.vol, total.weight)) +
  geom_point(color = "darkseagreen3") +
  geom_smooth(method = "lm", color = "darkseagreen3") +
  xlab("initial shrub volume (m^3)") +
  ylab("total biomass (g)")

#simple models
#shoots
fit <-lm(resprout ~ setup.vol, data = merged.data)
summary(fit)
## 
## Call:
## lm(formula = resprout ~ setup.vol, data = merged.data)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -8.273 -2.950  1.756  1.756 11.122 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  8.555190   0.196761   43.48   <2e-16 ***
## setup.vol   -0.072511   0.006399  -11.33   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.104 on 544 degrees of freedom
## Multiple R-squared:  0.191,  Adjusted R-squared:  0.1895 
## F-statistic: 128.4 on 1 and 544 DF,  p-value: < 2.2e-16
res <- resid(fit)
plot(merged.data$resprout, res)

plot(merged.data$setup.vol, res)

m <- glm(resprout ~ setup.vol, data = merged.data)
summary(m)
## 
## Call:
## glm(formula = resprout ~ setup.vol, data = merged.data)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
## -8.273  -2.950   1.756   1.756  11.122  
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  8.555190   0.196761   43.48   <2e-16 ***
## setup.vol   -0.072511   0.006399  -11.33   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 9.63211)
## 
##     Null deviance: 6476.6  on 545  degrees of freedom
## Residual deviance: 5239.9  on 544  degrees of freedom
## AIC: 2790.2
## 
## Number of Fisher Scoring iterations: 2
anova(m, test = "Chisq")
## Analysis of Deviance Table
## 
## Model: gaussian, link: identity
## 
## Response: resprout
## 
## Terms added sequentially (first to last)
## 
## 
##           Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                        545     6476.6              
## setup.vol  1   1236.7       544     5239.9 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#biomass
fit <-lm(total.weight ~ setup.vol, data = merged.data)
summary(fit)
## 
## Call:
## lm(formula = total.weight ~ setup.vol, data = merged.data)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##  -3400  -1312   1266   1266   4197 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 4269.731    107.670   39.66   <2e-16 ***
## setup.vol    -67.088      3.506  -19.13   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1692 on 541 degrees of freedom
##   (3 observations deleted due to missingness)
## Multiple R-squared:  0.4036, Adjusted R-squared:  0.4025 
## F-statistic: 366.1 on 1 and 541 DF,  p-value: < 2.2e-16
plot(fit$residuals~fit$fitted.values)

m <- glm(total.weight ~ setup.vol, data = merged.data)
summary(m)
## 
## Call:
## glm(formula = total.weight ~ setup.vol, data = merged.data)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
##  -3400   -1312    1266    1266    4197  
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 4269.731    107.670   39.66   <2e-16 ***
## setup.vol    -67.088      3.506  -19.13   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 2861881)
## 
##     Null deviance: 2595938131  on 542  degrees of freedom
## Residual deviance: 1548277535  on 541  degrees of freedom
##   (3 observations deleted due to missingness)
## AIC: 9617.7
## 
## Number of Fisher Scoring iterations: 2
anova(m, test = "Chisq")
## Analysis of Deviance Table
## 
## Model: gaussian, link: identity
## 
## Response: total.weight
## 
## Terms added sequentially (first to last)
## 
## 
##           Df   Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                          542 2595938131              
## setup.vol  1 1047660596       541 1548277535 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Proportion regrowth by initial shrub size
#calculate proportion reprouting by initial size
#merged.data <-merged.data %>% mutate(relative.regrowth = resprout/setup.vol) 
#merged.data <-merged.data %>% mutate(relative.biomass.regrowth = total.weight/setup.vol) #calculate proportion reprouting by initial size

#ggplot(merged.data, aes(volume, relative.regrowth)) + geom_point(color = "darkseagreen3") + xlab("current shrub volume") + 
  #geom_smooth(method = lm, color = "darkseagreen3") +
  #ylab("regrowth weighted by initial shrub size") +
  #scale_y_continuous(breaks=c(-2,-1,0,1,2))

#ggplot(merged.data, aes(volume, relative.biomass.regrowth)) + geom_point(color = "darkseagreen3") + xlab("current shrub volume") + 
  #geom_smooth(method = lm, color = "darkseagreen3") +
  #ylab("biomass regrowth weighted by initial shrub size") +
  #scale_y_continuous(breaks=c(-2,-1,0,1,2))


#m3 <- lm(merged.data$relative.regrowth ~ merged.data$volume)
#summary(m3) # slope is not significantly different from 0 so no difference in proportionate regrowth
#anova(m3, test = "Chisq")

#m3.1 <- lm(merged.data$relative.biomass.regrowth ~ merged.data$volume)
#summary(m3.1) # slope is not significantly different from 0 so no difference in proportionate regrowth
#anova(m3.1, test = "Chisq")

Biomass prediction

#number of resprouted shoots predict wet weight
ggplot(nov.2016, aes(resprout, total.weight)) + 
  geom_point(color = "seagreen3") + 
  xlab("resprouted shoot numbers") +
  ylab("total biomass (g)") +
  geom_smooth(method = lm, color = "seagreen3")

#quick test
fit <- lm(total.weight ~ resprout, data= nov.2016)
summary(fit)
## 
## Call:
## lm(formula = total.weight ~ resprout, data = nov.2016)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2127.08  -615.68   -99.73  1120.22  2763.02 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   594.48     738.92   0.805   0.4337  
## resprout      189.05      95.54   1.979   0.0665 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1390 on 15 degrees of freedom
##   (3 observations deleted due to missingness)
## Multiple R-squared:  0.207,  Adjusted R-squared:  0.1541 
## F-statistic: 3.916 on 1 and 15 DF,  p-value: 0.06649
ggplot(nov.2016, aes(volume, total.weight)) + 
  geom_point(color = "seagreen3") + 
  xlab("shrub volumes (m^3)") +
  ylab("total biomass (g)") +
  geom_smooth(method = lm, color = "seagreen3")

#quick test
fit <- lm(total.weight ~ volume, data= nov.2016)
summary(fit)
## 
## Call:
## lm(formula = total.weight ~ volume, data = nov.2016)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2045.56  -437.74   -66.36   467.51  2879.01 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)   887.75     414.97   2.139  0.04926 * 
## volume         93.35      27.83   3.354  0.00435 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1180 on 15 degrees of freedom
##   (3 observations deleted due to missingness)
## Multiple R-squared:  0.4286, Adjusted R-squared:  0.3905 
## F-statistic: 11.25 on 1 and 15 DF,  p-value: 0.004347
#Wet biomass predictor for dry weights
ggplot(merged.data, aes(total.weight, total.dry.weight.g)) + 
  geom_point(color = "seagreen3") + 
  xlab("total wet biomass (g)") +
  ylab("total dry weight (g)") +
  geom_smooth(method = "lm", color = "seagreen3")

fit <- lm(total.dry.weight.g ~ total.weight, data= merged.data)
summary(fit)
## 
## Call:
## lm(formula = total.dry.weight.g ~ total.weight, data = merged.data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -670.37  -23.23   37.01   37.01 2341.93 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -171.98974   49.50471  -3.474 0.000573 ***
## total.weight    0.95274    0.01173  81.232  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 438.2 on 370 degrees of freedom
##   (174 observations deleted due to missingness)
## Multiple R-squared:  0.9469, Adjusted R-squared:  0.9468 
## F-statistic:  6599 on 1 and 370 DF,  p-value: < 2.2e-16
library(outliers)
chisq.out.test(merged.data$total.weight)
## 
##  chi-squared test for outlier
## 
## data:  merged.data$total.weight
## X-squared = 1.3045, p-value = 0.2534
## alternative hypothesis: highest value 5248 is an outlier
chisq.out.test(merged.data$total.dry.weight.g)
## 
##  chi-squared test for outlier
## 
## data:  merged.data$total.dry.weight.g
## X-squared = 2.425, p-value = 0.1194
## alternative hypothesis: lowest value 443 is an outlier

Morphometrics

ggplot(merged.data, aes(total.singletons, total.complex.green.shoots)) + geom_point(color = "seagreen3") +
  geom_smooth(method = lm, color = "seagreen3")

ggplot(merged.data, aes(total.singletons, total.woody.shoots)) + geom_point(color = "seagreen3") +
  geom_smooth(method = lm, color = "seagreen3")

ggplot(merged.data, aes(resprout, total.singletons)) + 
    geom_point(color = "seagreen3") +
    geom_smooth(method = lm, color = "seagreen3")

fit <- lm(resprout~total.singletons, data= merged.data)
summary(fit)
## 
## Call:
## lm(formula = resprout ~ total.singletons, data = merged.data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8408 -1.5615 -0.0064 -0.0064  7.4167 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      3.6806915  0.1429728   25.74   <2e-16 ***
## total.singletons 0.0072792  0.0002502   29.09   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.125 on 540 degrees of freedom
##   (4 observations deleted due to missingness)
## Multiple R-squared:  0.6105, Adjusted R-squared:  0.6097 
## F-statistic: 846.3 on 1 and 540 DF,  p-value: < 2.2e-16
ggplot(merged.data, aes(volume, total.singletons)) + 
    geom_point(color = "seagreen3") +
    geom_smooth(method = lm, color = "seagreen3")

Summary

Primary trends.

  1. Counting resprouted shoots is an effective and relatively accurate mechanism to estimate regrowth in Ephedra californica following damage. Trends in regrowth similar between shoot number and total wet weight, and shoot number significantly and effectively predicts the mass of biomass regrowth per shrub.

  2. Larger shrubs have more resprouted shoots and regrowth of biomass; however, the regrowth is not proportionately greater for increasingly larger shrubs. THIS is an important finding. Larger shrubs do NOT have a greater capacity to proportionally recover from damage relative to smaller shrubs.

  3. Ephedra californica can recover to some extent following damage. However, we do not know how these recovery patterns compare to the background growth patterns of undamaged shrubs nor whether subsequent or repeated damages to this species reduces its potential capacity to recover.

  4. Methodologically, wet weight is an effective measure of biomass produced (i.e. predicts dry weight effectively with little variation).

Future directions.

  1. Remeasure recovery in 1 and 2 years to this new clipping event.

  2. Develop a means to estimate growth rate in undamaged shrubs for the next 1-2years.